// import { reactive } from 'vue';
import OpenSeadragon from 'openseadragon';
import type { Canvas } from 'fabric/fabric-impl';

export {
  dataInfo,
  OpenSeadragonOptions,
  FabricToolOptions,
}
//
const dataInfo = {
  viewer: null as unknown as OpenSeadragon.Viewer, // 图片容器
  mouseTracker: (null as unknown) as OpenSeadragon.MouseTracker, // 图片容器的事件对象
  imageUrl: "",//openseadragon 图片地址
  slideInfo: (null as unknown) as {
    Magnification: string;
    Mpp: string;
    Width: string;
    Height: string;
  }, // openseadragon 图片相关信息
  fabricToolCanvas: (null as unknown) as HTMLElement, // 标注画布容器
  frabicCanvas: (null as unknown) as Canvas, // 标注画布
  pencilColor: "#448E97", // 笔刷初始颜色
  pencilWidth: 1, // 笔刷初始宽度
  doDrawing: false, // 绘制状态
  mouseFrom: {
    x: 0,
    y: 0,
  }, // 起始点位
  mouseTo: {
    x: 0,
    y: 0,
  }, // 结束点位
  canvasObject: (null as unknown) as fabric.Object, // 绘制的标注对象
  groupObject: (null as unknown) as fabric.Group, // 绘制的组对象
  textObject: (null as unknown) as fabric.Text, // 绘制的组对象
  isSelectObj: (null as unknown) as fabric.Object, // 选中标注对象
  currentToolItem: {} as Header.ToolBarItem,
  isDefault: false,
  ruleInfo: {
    color: '#99ff66',//尺子线段颜色
  },
}

// openseadragon 图片容器的配置项
const OpenSeadragonOptions = {
  id: "viewer",
  // tileSources: `http://bzsite.dev.proxima-ai.com:88/deepzoom/4494/eb98dfd37281aaa989baf2532df4a2d366c25f2d/1f37e6a3-debe-4fa9-a4ab-c9d0812d8ab0/2022082312511542128.svs.dzi`,
  showNavigator: true, //是否显示导航缩略图
  animationTime: 0.5, //放大或缩小动画过渡的时间，这个值越小，过渡快
  blendTime: 0.1, //初始化白屏时间
  constrainDuringPan: false, // 规定了图像是否能被拖拽出允许最小范围
  panHorizontal: false, // 水平移动约束
  panVertical: false, // 垂直移动约束
  showNavigationControl: false, //基础控件的展示与隐藏
  showZoomControl: false, //显示放大和缩小按钮
  showHomeControl: false, //显示回到主位置按钮
  showFullPageControl: false, //显示全屏按钮
  showRotationControl: false, //显示左旋转和右旋转按钮  只有在支持的浏览器上才可以正常显示
  showFlipControl: false, //显示镜像翻转按钮
  showReferenceStrip: false, //显示图像缩略图滚动条
  showSequenceControl: false, //显示向前向后按钮
  sequenceMode: false, // 是否为多张图像的图象源 false为单张 true为多张
  navigatorPosition: "BOTTOM_LEFT", ///导航所在位置 若为ABSOLUTE，可根据需求指定位置navigatorTop，navigatorLeft，  且会忽略下边两个属性若为其他，则会根据下边的属性或者导航的宽高确定导航的大小
  navigatorDisplayRegionColor: "#0915F5", //导航中，当前查看区域的边框颜色
  navigatorHeight: 200,
  navigatorWidth: 200,
  navigatorAutoResize: false,
  maxZoomPixelRatio: 2, //最大放大倍率，窗口的百分比
  minZoomImageRatio: 0.1,
  maxZoomLevel: 80, //最大放大倍数
  visibilityRatio: 0.5, //0-1之间，0代表图片可完全拖出显示框，1代表图片一点也不可以拖出
  zoomPerScroll: 1, //滚轮放大倍率，设置为1  则代表禁用滚轮事件   同gestureSettingsMouse.scrollToZoom
  autoHideControls: false, //焦点不在图像时是否自动隐藏自带工具栏
  timeout: 120000, //加载超时时间
  previousButton: "preBtn",
  nextButton: "nextBtn",
  initialPage: 1,
  maxImageCacheCount: 200,
  gestureSettingsMouse: {
    clickToZoom: false, //是否开启鼠标单击放大事件 fasle不可点击 true可以点击
    dblClickToZoom: false, //是否开启双击事件,如果将此设置为true   那么应该禁用单击事件
  },
  mouseNavEnabled: 1,
  // pixelsPerArrowPress: 40,//平移快捷键
  crossOriginPolicy: "Anonymous",
  debugMode: false,
} as OpenSeadragon.Options

// fabric 标注工具配置项
const FabricToolOptions = {
  // 标注工具的填充初始颜色，设置为透明不然会画出一个实心标注
  fill: "rgba(255, 255, 255, 0)",
  // 是否显示调整的控制器 true为显示 false隐藏
  hasControls: true,
  // 是否显示控制器边框 true显示 false隐藏
  hasBorders: false,
  // 控制器是否为填充 true为透明 false为填充
  transparentCorners: false,
  // 是否可以旋转 false为不可以旋转 true为可旋转
  hasRotatingPoint: false,
  // 是否允许选中 true不允许选中 false允许选中
  skipTargetFind: true,
  // 元素区域而不是边框 true为空白区不可选 false为空白区域可选中
  perPixelTargetFind: true,
  // 控件是否可以选择 false为不可以被选择 true为可以被选择
  selectable: true,
  // 记录绘制时倍率
  acZoom: 0,
  objectCaching: false,
  // 当前标注对象类型
  type: "",
  // 选框填充色
  selectionColor: "transparent",
  // 选框边框颜色
  selectionBorderColor: "transparent",
  // 禁止旋转 true为禁止 false为放开 默认false
  lockRotation: true,
  // 是否以中心店缩放 默认是true以中心点缩放 false不是中心点
  centeredScaling: false,
  // 是否限制边框缩放 默认false不限制 true限制
  strokeUniform: true,
  // 是否可选择 false为不可以被选择 true可以被选择
  selection: true,
  stroke: "",
  // id: "0",
  borderColor: "#1FFF79",
  cornerColor: "#1FFF79",
  cornerSize: 5,
  strokeWidth: 1,
  // clipPath: false,
  // minScaleLimit: -2,
  borderScaleFactor: 10,
  _controlsVisibility: {mtr: false},
}